#ifndef __CONFIGWIDGET_H__
#define __CONFIGWIDGET_H__

// Qt Includes
#include <QList>
#include <QPair>
#include <QWidget>

// Local Declarations
class CPlugin;

// Ui Includes
#include "ui_configwidget.h"

// ******************************************************************
// CConfigWidget
// ******************************************************************
class CConfigWidget : public QWidget, private Ui::ConfigWidget
{
	Q_OBJECT

public:
/////////////////////////////////////////////////////////////////////
// Construction & Destruction
/////////////////////////////////////////////////////////////////////
	CConfigWidget(QWidget *pParent = NULL,
			Qt::WFlags windowFlags = 0);
	~CConfigWidget();
/////////////////////////////////////////////////////////////////////

/////////////////////////////////////////////////////////////////////
// Member Functions
/////////////////////////////////////////////////////////////////////
	void setConfigPayload(const QString &strXml);
/////////////////////////////////////////////////////////////////////

signals:
/////////////////////////////////////////////////////////////////////
// Signals
/////////////////////////////////////////////////////////////////////
	void sendProject(const QPair<QString, QStringList> &theFileCollection,
			const QString &strConfigPayload);
/////////////////////////////////////////////////////////////////////

private slots:
/////////////////////////////////////////////////////////////////////
// Private Slots
/////////////////////////////////////////////////////////////////////
	void onBrowseSourcePath();
	void onPluginListWidgetItemChanged(QListWidgetItem *pCurrent);
	void onSendProject();
/////////////////////////////////////////////////////////////////////

private:
/////////////////////////////////////////////////////////////////////
// Member Functions
/////////////////////////////////////////////////////////////////////
	void updatePluginListWidget();
	void updateCurrentPluginDetails(CPlugin *pPlugin);

	QString getProjectConfigPayload() const;
/////////////////////////////////////////////////////////////////////

/////////////////////////////////////////////////////////////////////
// Member Variables
/////////////////////////////////////////////////////////////////////
	QList<CPlugin*> m_lstPlugins;
/////////////////////////////////////////////////////////////////////
};

#endif // #ifndef __CONFIGWIDGET_H__
